/**
 * 交互式命令行对话
 * 运行: pnpm tsx src/examples/interactive-chat.ts
 */
import { AIChatbot } from '../chatbot.js';
import * as readline from 'readline';

async function main() {
  console.log('💬 交互式 AI 对话机器人');
  console.log('输入 "exit" 或 "quit" 退出');
  console.log('输入 "clear" 清空对话历史');
  console.log('输入 "history" 查看对话历史\n');

  const bot = new AIChatbot({
    systemPrompt: '你是一个友好、博学的 AI 助手。',
    temperature: 0.7,
    enableMemory: true,
  });

  const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
    prompt: '👤 你: ',
  });

  rl.prompt();

  rl.on('line', async (input: string) => {
    const message = input.trim();

    if (!message) {
      rl.prompt();
      return;
    }

    // 处理特殊命令
    if (message === 'exit' || message === 'quit') {
      console.log('👋 再见！');
      rl.close();
      process.exit(0);
    }

    if (message === 'clear') {
      bot.clearHistory();
      console.log('✨ 对话历史已清空\n');
      rl.prompt();
      return;
    }

    if (message === 'history') {
      const history = bot.getHistory();
      console.log('\n📚 对话历史:');
      history.forEach((msg, idx) => {
        const type = msg._getType();
        const icon = type === 'human' ? '👤' : type === 'ai' ? '🤖' : '⚙️';
        console.log(`${idx + 1}. ${icon} ${type}: ${msg.content}\n`);
      });
      rl.prompt();
      return;
    }

    try {
      // 发送消息并获取回复
      console.log('🤖 AI: ', { newline: false });
      const response = await bot.chat(message);
      console.log(response + '\n');
    } catch (error) {
      console.error('❌ 错误:', error instanceof Error ? error.message : error);
    }

    rl.prompt();
  });

  rl.on('close', () => {
    console.log('\n👋 再见！');
    process.exit(0);
  });
}

main().catch(console.error);

